home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
TPUG - Toronto PET Users Group
/
TPUG Users Group CD
/
TPUG Users Group CD.iso
/
COMAL
/
Z-Misc Series
/
(k)za.d64
/
ml'procs
< prev
next >
Wrap
Text File
|
2007-03-01
|
4KB
|
168 lines
9000 // DELETE "0:ML'PROCS"
9005 //
9010 // LIST "0:ML'PROCS"
9015 //
9020 // BY: DAVID STIDOLPH
9025 // AND
9030 // JESSE KNIGHT, JR.
9035 //
9040 // BEFORE YOU USE THESE PROCEDURES
9045 // YOU MUST HAVE RUN ML'SETUP OR
9050 // PROC ML'DATA IN THAT PROGRAM.
9055 //
9060 // OTHERWISE YOU WILL CRASH COMAL!
9065 //
9070 PROC QUOTE'MODE(ON'OFF) CLOSED
9075 IF ON'OFF THEN
9080 POKE 169,0
9085 ELSE
9090 POKE 169,1
9095 ENDIF
9100 ENDPROC QUOTE'MODE
9105 //
9110 PROC CLOCK'DISPLAY(ON'OFF) CLOSED
9115 IF ON'OFF THEN
9120 POKE 182,1
9125 ELSE
9130 POKE 182,0
9135 ENDIF
9140 ENDPROC CLOCK'DISPLAY
9145 //
9150 PROC SPRITE'FLIP'LEFT'RIGHT(BLK)
9155 IF PEEK(52736)=165 THEN
9160 POKE 247,BLK
9165 SYS 52736
9170 ENDIF
9175 ENDPROC SPRITE'FLIP'LEFT'RIGHT
9180 //
9185 PROC SPRITE'FLIP'UP'DOWN(BLK)
9190 IF PEEK(53097)=165 THEN
9195 POKE 247,BLK
9200 SYS 52736
9205 ENDIF
9210 ENDPROC SPRITE'FLIP'UP'DOWN
9215 //
9220 PROC SETUP'IRQ
9225 IF PEEK(52843)=120 AND PEEK(788)=85 AND PEEK(789)=45 THEN
9230 SYS 52843
9235 ENDIF
9240 ENDPROC SETUP'IRQ
9245 //
9250 PROC RESTORE'IRQ
9255 IF PEEK(52868)=120 AND PEEK(788)=147 AND PEEK(789)=206 THEN
9260 SYS 52868
9265 ENDIF
9270 ENDPROC RESTORE'IRQ
9275 //
9280 PROC REVERSE'SCREEN
9285 IF PEEK(53045)=169 THEN
9290 SYS 53045
9295 ENDIF
9300 ENDPROC REVERSE'SCREEN
9305 //
9310 PROC SAVE'SCREEN(FILENAME$) CLOSED
9315 IF PEEK(53169)=166 THEN
9320 OPEN FILE 79,FILENAME$+",P",WRITE
9325 POKE 247,79
9330 SYS 53169
9335 CLOSE FILE 79
9340 ENDIF
9345 ENDPROC SAVE'SCREEN
9350 //
9355 //THE REST OF THESE PROCEDURES ARE
9360 //FOR READING SPRITES DEFINED BY
9365 //STRINGS. (I.E. ".....#####...")
9370 //IF YOU DON'T NEED THEM THEN
9375 //DEL 9355- TO SAVE MEMORY.
9380 //
9385 FUNC FIND'STRING CLOSED
9390 POINTER1:=PEEK(51)
9395 POINTER2:=PEEK(52)
9400 ADDRESS:=POINTER2*256+POINTER1
9405 RETURN ADDRESS+4
9410 ENDFUNC FIND'STRING
9415 //
9420 PROC READ'SPRITE'H(BLK) CLOSED
9425 CHECK'SPRITE'ML'DATA
9430 DIM LINE$ OF 24
9435 DIM SPRITE$ OF 64
9440 SPRITE$:=""; COUNT:=1
9445 READ LINE$
9450 WHILE LINE$(1)<>"M" DO
9455 WHILE LEN(LINE$)<24 DO LINE$:=LINE$+"0"
9460 DEF'LINE(LINE$,SPRITE$,COUNT)
9465 READ LINE$
9470 ENDWHILE
9475 END'SPRITE(BLK,LINE$,SPRITE$,COUNT)
9480 ENDPROC READ'SPRITE'H
9485 //
9490 PROC READ'SPRITE'M(BLK) CLOSED
9495 DIM SPRITE$ OF 64, LINE$ OF 12
9500 DIM F'LINE$ OF 24
9505 SPRITE$:=""; LINE$:=""
9510 CHECK'SPRITE'ML'DATA
9515 COUNT:=1
9520 READ LINE$
9525 WHILE LINE$(1) IN "0123" AND COUNT<64 DO
9530 WHILE LEN(LINE$)<12 DO LINE$:=LINE$+"0"
9535 F'LINE$:=""
9540 FOR LP1:=1 TO 12 DO
9545 CASE LINE$(LP1) OF
9550 WHEN "0"
9555 F'LINE$:=F'LINE$+"00"
9560 WHEN "1"
9565 F'LINE$:=F'LINE$+"01"
9570 WHEN "2"
9575 F'LINE$:=F'LINE$+"10"
9580 WHEN "3"
9585 F'LINE$:=F'LINE$+"11"
9590 OTHERWISE
9595 PRINT "ERROR IN SPRITE DATA STATEMENTS"
9600 STOP
9605 ENDCASE
9610 ENDFOR LP1
9615 DEF'LINE(F'LINE$,SPRITE$,COUNT)
9620 READ LINE$
9625 ENDWHILE
9630 END'SPRITE(BLK,LINE$,SPRITE$,COUNT)
9635 ENDPROC READ'SPRITE'M
9640 //
9645 PROC DEF'LINE(REF LINE$,REF SPRITE$,REF COUNT) CLOSED
9650 IF LINE$="" THEN NULL
9655 ADDR:=FIND'STRING
9660 POKE 53011,ADDR MOD 256
9665 POKE 53012,ADDR DIV 256
9670 SYS 52992
9675 FOR X:=0 TO 2 DO
9680 SPRITE$(COUNT):=CHR$(PEEK(680+X))
9685 COUNT:+1
9690 ENDFOR X
9695 ENDPROC DEF'LINE
9700 //
9705 PROC END'SPRITE(BLK,LINE$,REF SPRITE$,REF COUNT) CLOSED
9710 WHILE COUNT<64 DO
9715 SPRITE$(COUNT):=CHR$(0)
9720 COUNT:+1
9725 ENDWHILE
9730 CASE LINE$(1) OF
9735 WHEN "H","╚"
9740 SPRITE$(64):=CHR$(0)
9745 WHEN "M","═"
9750 SPRITE$(64):=CHR$(1)
9755 OTHERWISE
9760 PRINT "ERROR IN SPRITE DATA STATEMENTS"
9765 STOP
9770 ENDCASE
9775 DEFINE BLK,SPRITE$
9780 ENDPROC END'SPRITE
9785 //
9790 PROC CHECK'SPRITE'ML'DATA
9795 IF PEEK(52992)<>169 THEN
9800 PRINT "ERROR -- MACHINE LANGUAGE PACKAGE"
9805 PRINT " NOT PRESENT. PLEASE LOAD"
9810 PRINT " BEFORE RUNNING."
9815 STOP
9820 ENDIF
9825 ENDPROC CHECK'SPRITE'ML'DATA
9830 //